home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Logiciels PC 7
/
logiciel pc 7.iso
/
Divers
/
Prog
/
Delphi
/
ZipManager
/
DISK1
/
_SETUP.1
/
MainForm.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1998-12-12
|
13KB
|
395 lines
(*
UnitΘ principale
(c) Logiciel PC 1998 & Gilles ROMANI
Cette fiche requiert l'utilisation des composants freeware suivants :
* Zip Master
* TFileDrag Component (c) Erik C. Nielsen
*)
unit MainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Grids, ToolWin, ComCtrls, Buttons, filedrag, StdCtrls,
ZipMstr, Menus, APropos;
type
TForm1 = class(TForm)
FileDrag1: TFileDrag;
ZipMaster1: TZipMaster;
SaveDialog1: TSaveDialog;
PopupMenu1: TPopupMenu;
Extrairevers1: TMenuItem;
Supprimer1: TMenuItem;
MainMenu1: TMainMenu;
Fichier1: TMenuItem;
Nouvellearchive1: TMenuItem;
FermerArchive1: TMenuItem;
N1: TMenuItem;
Quitter1: TMenuItem;
Options1: TMenuItem;
N2: TMenuItem;
Aide1: TMenuItem;
AproposdeZipManager1: TMenuItem;
Panel4: TPanel;
StatusBar1: TStatusBar;
OpenDialog1: TOpenDialog;
ListView1: TListView;
N3: TMenuItem;
N4: TMenuItem;
Voir1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FileDrag1Drop(Sender: TObject);
procedure FillGrid;
procedure Nouvellearchive1Click(Sender: TObject);
procedure Supprimer1Click(Sender: TObject);
procedure Quitter1Click(Sender: TObject);
procedure FermerArchive1Click(Sender: TObject);
procedure AproposdeZipManager1Click(Sender: TObject);
procedure Options1Click(Sender: TObject);
procedure Extrairevers1Click(Sender: TObject);
procedure Voir1Click(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
private
{ DΘclarations privΘes}
public
{ DΘclarations publiques}
end;
var
Form1: TForm1;
implementation
uses options, Extract, view;
{$R *.DFM}
(*
*********************************************
La procΘdure de remplissage de la grille
*********************************************
*)
procedure TForm1.FillGrid;
var
i: Integer;
NewItem : TListItem;
NewColumn : TListColumn;
begin
with ListView1 do
begin
Columns.Clear;
Items.Clear;
NewColumn := Columns.Add;
NewColumn.Caption := 'Nom';
NewColumn := Columns.Add;
NewColumn.Caption := 'Taille (compressΘe)';
NewColumn := Columns.Add;
NewColumn.Caption := 'Taille (dΘcompressΘe)';
NewColumn := Columns.Add;
NewColumn.Caption := 'Date';
for i:=0 to ZipMaster1.Count-1 do
begin
with ZipDirEntry( ZipMaster1.ZipContents[i]^) do
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := FileName;
NewItem.SubItems.Add( IntToStr(CompressedSize));
NewItem.SubItems.Add( IntToStr(UncompressedSize));
NewItem.SubItems.Add( FormatDateTime('ddddd t',FileDateToDateTime(DateTime)));
end;
end;
Columns[0].Width := 250;
Columns[1].Width := 120;
Columns[2].Width := 120;
Columns[3].Width := 70;
end;
end;
(*
***********************************
Creation de la fiche principale
***********************************
*)
procedure TForm1.FormCreate(Sender: TObject);
begin
// Les options par dΘfaut de Zip Master
ZipMaster1.AddOptions := [ AddDirNames, AddRecurseDirs, AddHiddenFiles];
// Mise α jour de la StatusBar
StatusBar1.Panels[0].Text := 'Aucune archive ouverte';
StatusBar1.Panels[1].Text := 'RΘpertoires - RΘcursif - Fichiers cachΘs';
end;
(*
************************
Le lachΘ de fichiers
************************
*)
procedure TForm1.FileDrag1Drop(Sender: TObject);
begin
(* L'archive est vide *)
if ( ZipMaster1.ZipFileName = '') then
begin
(* On demande un nom pour l'archive *)
SaveDialog1.FileName := '*.zip';
if ( SaveDialog1.Execute ) then
begin
// MΘmorisation du nom de l'archive
ZipMaster1.ZipFileName := SaveDialog1.FileName;
// Ajout des fichiers α l'archive
ZipMaster1.FSpecArgs := FileDrag1.Files;
(* Au cas o∙ se serait long, on modifie le curseur *)
Screen.Cursor := crHourGlass;
ZipMaster1.Add;
// Mise α jour de la grille
FillGrid;
Screen.Cursor := crDefault;
// Modification du bandeau de l'application
Form1.Caption := 'Zip Manager - ' + ZipMaster1.ZipFileName;
end
end
else
begin
(* L'archive est dΘjα ouverte *)
// Ajout des fichiers α l'archive
ZipMaster1.FSpecArgs := FileDrag1.Files;
Screen.Cursor := crHourGlass;
ZipMaster1.Add;
// Mise α jour de la grille
FillGrid;
Screen.Cursor := crDefault;
end;
end;
(*
*******************************
Le menu ouverture d'archive
*******************************
*)
procedure TForm1.Nouvellearchive1Click(Sender: TObject);
begin
// on demande le nom de l'archive
OpenDialog1.FileName := '*.zip';
if ( OpenDialog1.Execute ) then
begin
ZipMaster1.ZipFileName := OpenDialog1.FileName;
// Modification du bandeau de l'application
Form1.Caption := 'Zip Manager - ' + ZipMaster1.ZipFileName;
// Mise α jour de la grille
Screen.Cursor := crHourGlass;
FillGrid;
Screen.Cursor := crDefault;
// Mise α jour de la status Bar
StatusBar1.Panels[0].Text := ZipMaster1.ZipFileName;
end;
end;
(*
***************************
Suppression de fichiers
***************************
*)
procedure TForm1.Supprimer1Click(Sender: TObject);
var
i : Integer;
nCpt : Integer;
szMsg : String;
begin
if ListView1.Selected <> Nil then
begin
// Initialise le nombre de fichiers α supprimer
nCpt := 0;
// Vide la liste des fichiers
ZipMaster1.FSpecArgs.Clear;
Screen.Cursor := crHourGlass;
// RecupΦre les objets sΘlectionnΘs
for i := 0 to ListView1.Items.Count-1 do
begin
// Ajoute les fichiers α supprimer de l'archive
if ( ListView1.Items[i].Selected = TRUE) then
begin
ZipMaster1.FSpecArgs.Add( ListView1.Items[i].Caption);
nCpt := nCpt + 1;
end;
end;
szMsg := 'Etes-vous s√r de vouloir supprimer ce';
if ( nCpt >1) then szMsg := szMsg + 's '+IntToStr(nCpt) + ' fichiers ?'
else szMsg := szMsg + ' fichier ?';
if MessageDlg(szMsg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
// Suppression du fichier dans l'archive
ZipMaster1.Delete
else
// Vide la liste des fichiers
ZipMaster1.FSpecArgs.Clear;
// Mise α jour de la grille
FillGrid;
Screen.Cursor := crDefault;
end;
end;
(*
***********************
La fin du programme
***********************
*)
procedure TForm1.Quitter1Click(Sender: TObject);
begin
Close;
end;
(*
***************************
Fermeture d'une archive
***************************
*)
procedure TForm1.FermerArchive1Click(Sender: TObject);
begin
// Vide le nom de l'archive
ZipMaster1.ZipFilename := '';
// Modifie le bandeau de la fenΩtre
Form1.Caption := 'Zip Manager';
// Modifie les panels
StatusBar1.Panels[0].Text := 'Aucune archive ouverte';
// Mise α jour de la grille
FillGrid;
end;
(*
***********************
La boite d'A propos
***********************
*)
procedure TForm1.AproposdeZipManager1Click(Sender: TObject);
begin
// Affiche la boite de dialogue
AboutBox.ShowModal;
end;
(*
***********************************
Lancement de la boite d'options
***********************************
*)
procedure TForm1.Options1Click(Sender: TObject);
begin
(* On a cliquΘ sur OK ?*)
if ( OKRightDlg1.ShowModal = mrOk) then
begin
(* Rajout ou suppression des options et mise α jour de la status Bar *)
// Teste si option garder les noms des rΘpertoires
if ( OKRightDlg1.CheckBox1.State = cbChecked) then
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddDirNames];
StatusBar1.Panels[1].Text := 'RΘpertoires ';
end
else
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddDirNames];
StatusBar1.Panels[1].Text := '';
end;
// Teste si option rΘcursif
if ( OKRightDlg1.CheckBox2.State = cbChecked) then
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddRecurseDirs];
StatusBar1.Panels[1].Text := StatusBar1.Panels[1].Text + 'RΘcursif ';
end
else
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddRecurseDirs];
end;
// Teste si option Compresser les fichiers cachΘs
if ( OKRightDlg1.CheckBox3.State = cbChecked) then
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions + [ AddHiddenFiles];
StatusBar1.Panels[1].Text := StatusBar1.Panels[1].Text + 'Fichiers CachΘs';
end
else
begin
ZipMaster1.AddOptions := ZipMaster1.AddOptions - [ AddHiddenFiles];
end;
end;
end;
(*
***********************************
Extraction des fichiers vers...
***********************************
*)
procedure TForm1.Extrairevers1Click(Sender: TObject);
var i : Integer;
begin
if ListView1.Selected <> Nil then
begin
(* Affiche la boite de sΘlection de rΘpertoires *)
(* On a cliquΘ sur OK ?*)
if (OKRightDlg.ShowModal = mrOk) then
begin
(* On garde l'arborescence *)
ZipMaster1.ExtrOptions := [ ExtrDirNames];
(* Le chemin de base pour l'extraction *)
ZipMaster1.ExtrBaseDir := OKRightDlg.DirectoryListBox1.Directory;
// Parcoure la ListView pour sΘlectionner les fichiers
for i := 0 to ListView1.Items.Count-1 do
begin
if ( ListView1.Items[i].Selected = TRUE) then
ZipMaster1.FSpecArgs.Add( ListView1.Items[i].Caption);
end;
// Extraction
Screen.Cursor := crHourGlass;
ZipMaster1.Extract;
Screen.Cursor := crDefault;
end;
end;
end;
(*
******************************
Visualisation d'un fichier
******************************
*)
procedure VisualisationFichier;
var szFich : String;
i : Integer;
begin
with Form1 do
begin
if ( ListView1.Selected <> Nil) then
begin
// DΘcompression du fichier dans un rΘpertoire temporaire
szFich := ListView1.Selected.Caption;
ZipMaster1.FSpecArgs.Add( szFich);
ZipMaster1.ExtrOptions := [];
(* Le chemin de base pour l'extraction *)
ZipMaster1.ExtrBaseDir := 'c:\temp';
ZipMaster1.Extract;
// Modification du nom de l'archive pour remplacer les / par \
for i:=1 to Length( szFich) do
begin
if IsDelimiter( '/', szFich, i) then
szFich[i] := '\';
end;
// Extraction du nom du fichier
szFich := ExtractFileName( szFich);
// Chargement du fichier dans le mΘmo
Form3.Memo1.Lines.LoadFromFile( 'c:\temp\'+ szFich);
// Affichage du viewer
Form3.ShowModal;
// Vidage du mΘmo
Form3.Memo1.Lines.Clear;
// Suppression du fichier
DeleteFile( 'c:\temp\'+szFich);
end;
end;
end;
procedure TForm1.Voir1Click(Sender: TObject);
begin
VisualisationFichier;
end;
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
VisualisationFichier;
end;
end.